home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Purity / Purity #23 (1994-02-10)(Diesel)(DE)[WB].zip / Purity #23 (1994-02-10)(Diesel)(DE)[WB].adf / OS_2_Beispiele / AppIcon_DEMO.p < prev    next >
Text File  |  1994-01-20  |  2KB  |  86 lines

  1. PROGRAM AppIcon_DEMO;
  2.  
  3. { DEMO-Programm zur Verwendung von AppIcons }
  4.  
  5. {$opt q}
  6.  
  7. USES Intuition, Graphics;
  8.  
  9. {$incl"dos.lib","workbench/startup.h","wb.lib","icon.lib"}
  10.  
  11. CONST
  12.   APPICON_ID = 1;
  13.  
  14. VAR
  15.   AppPort    : p_MsgPort;    { Unser Message Port }
  16.   AppObject  : p_DiskObject; { DiskObject für AppIcon }
  17.   AppMsg     : p_AppMessage; { AppMessage }
  18.   MyAppIcon  : p_AppIcon;    { Unser AppIcon }
  19.   AppSig,Sig : LONG;         { Signale }
  20.   ok         : BOOLEAN;      { Dummy }
  21.  
  22. PROCEDURE CleanUp;
  23. BEGIN
  24.   { AppIcon entfernen }
  25.   IF (MyAppIcon <> NIL) THEN ok := RemoveAppIcon(MyAppIcon);
  26.   { DiskObject freigeben }
  27.   IF (AppObject <> NIL) THEN FreeDiskObject(AppObject);
  28.   { Vom Port evtl. Messages entfernen }
  29.   IF (AppPort <> NIL) THEN
  30.   BEGIN
  31.     AppMsg := p_AppMessage(GetMsg(AppPort));
  32.     WHILE AppMsg <> NIL DO
  33.     BEGIN
  34.       ReplyMsg(p_Message(AppMsg));
  35.       AppMsg := p_AppMessage(GetMsg(AppPort));
  36.     END;
  37.     { Port entfernen }
  38.     DeleteMsgPort(AppPort);
  39.   END;
  40.   HALT(0);
  41. END;
  42.  
  43. BEGIN
  44.   { Libraries öffnen }
  45.   OpenLib(IconBase,"icon.library",0);
  46.   OpenLib(WorkbenchBase,"workbench.library",0);
  47.   { Default-DiskObject kriegen }
  48.   AppObject := GetDefDiskObject(WBPROJECT);
  49.   IF AppObject = NIL THEN CleanUp;
  50.   { MessagePort kreieren }
  51.   AppPort := CreateMsgPort;
  52.   IF AppPort = NIL THEN CleanUp;
  53.   MyAppIcon := AddAppIconA(APPICON_ID,0,"Doppelklick-Mich !",AppPort,NIL,
  54.                            AppObject,NIL);
  55.   IF MyAppIcon = NIL THEN CleanUp;
  56.   AppSig := LONG(1) SHL LONG(AppPort^.mp_SigBit);
  57.   ok := FALSE;
  58.   REPEAT
  59.     Sig := _Wait(AppSig OR SIGBREAKF_CTRL_C);
  60.     IF (sig AND AppSig) = AppSig THEN
  61.     BEGIN
  62.       AppMsg := p_AppMessage(GetMsg(AppPort));
  63.       WHILE AppMsg <> NIL DO
  64.       BEGIN
  65.         CASE AppMsg^.am_Type OF
  66.           MTYPE_APPICON:
  67.             BEGIN
  68.               { Doppelklick ??? }
  69.               IF (AppMsg^.am_NumArgs = 0) AND (AppMsg^.am_ArgList=NIL) THEN
  70.                 DisplayBeep(NIL);
  71.             END;
  72.         ELSE END;
  73.         ReplyMsg(p_Message(AppMsg));
  74.         AppMsg := p_AppMessage(GetMsg(AppPort));
  75.       END;
  76.     END ELSE ok := TRUE;
  77.   UNTIL ok;
  78.   CleanUp;
  79. END.
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.